import request from "@/utils/request";

const SPOTRECORD_BASE_URL = "/api/v1/spotRecords";

const SpotRecordAPI = {
  /** 获取出票数据分页数据 */
  getPage(queryParams?: SpotRecordPageQuery) {
    return request<any, PageResult<SpotRecordPageVO[]>>({
      url: `${SPOTRECORD_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },

  getCount(queryParams?: SpotRecordPageQuery) {
    return request<any, SpotRecordForm[]>({
      url: `${SPOTRECORD_BASE_URL}/count`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取出票数据表单数据
   *
   * @param id 出票数据ID
   * @returns 出票数据表单数据
   */
  getFormData(id: number) {
    return request<any, SpotRecordForm>({
      url: `${SPOTRECORD_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /** 添加出票数据*/
  add(data: SpotRecordForm) {
    return request<any, string>({
      url: `${SPOTRECORD_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 更新出票数据
   *
   * @param id 出票数据ID
   * @param data 出票数据表单数据
   */
  update(id: number, data: SpotRecordForm) {
    return request({
      url: `${SPOTRECORD_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 批量删除出票数据，多个以英文逗号(,)分割
   *
   * @param ids 出票数据ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${SPOTRECORD_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  export(queryParams: SpotRecordPageQuery) {
    return request({
      url: `${SPOTRECORD_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "blob",
    });
  },
};

export default SpotRecordAPI;

/** 出票数据分页查询参数 */
export interface SpotRecordPageQuery extends PageQuery {
  /** 旅行社Id */
  deptId?: number;
  /** 分类Id */
  categoryId?: number;
  /** 出票时间 */
  outTime?: [string, string];
  /** 车牌号码 */
  carNo?: string;
  /** 导游姓名 */
  guideName?: string;
  userName?: string;
}

/** 出票数据表单对象 */
export interface SpotRecordForm {
  id?: number;
  /** 旅行社Id */
  deptId?: number;
  /** 旅行社名称 */
  deptName?: string;
  /** 出票时间 */
  outTime?: Date;
  /** 出票日期 */
  outDate?: Date;
  /** 分类Id */
  categoryId?: number;
  /** 分类名称 */
  categoryName?: string;
  /** 出票数量 */
  num?: number;
  /** 车牌号码 */
  carNo?: string;
  /** 导游姓名 */
  guideName?: string;
  /** 创建时间 */
  createTime?: Date;
}

/** 出票数据分页对象 */
export interface SpotRecordPageVO {
  id?: number;
  /** 旅行社Id */
  deptId?: number;
  /** 旅行社名称 */
  deptName?: string;
  /** 出票时间 */
  outTime?: Date;
  /** 出票日期 */
  outDate?: Date;
  /** 分类Id */
  categoryId?: number;
  /** 分类名称 */
  categoryName?: string;
  /** 出票数量 */
  num?: number;
  /** 车牌号码 */
  carNo?: string;
  /** 导游姓名 */
  guideName?: string;
  /** 创建时间 */
  createTime?: Date;
}
